package com.wisely.highlight_spring4.ch1.javaconfig;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration //声明这是一个配置类
//没有用@ComponentScan,因为其他类中没有使用注解，而是在该类中定义了
public class JavaConfig {
    @Bean
    //使用@Bean注解声明当前方法返回值是一个bean，bean的名称是方法名称
    public FunctionService functionService() {
        return new FunctionService();
    }

    @Bean
    public UseFunctionService useFunctionService() {
        UseFunctionService useFunctionService = new UseFunctionService();
        //注入functionService 的bean直接使用functionService()
        useFunctionService.setFunctionService(functionService());
        return useFunctionService;

    }

    //方式二：直接将functionService 作为参数给useFunctionService，在spring中，只要容器中存在某个bean，就可以在另一个bean的声明方法的参数中注入
	/*@Bean
	public UseFunctionService useFunctionService(FunctionService functionService){//4
		UseFunctionService useFunctionService = new UseFunctionService();
		useFunctionService.setFunctionService(functionService);
		return useFunctionService;
	}*/
}
